Since the first incarnation of digital paint systems, there has been a lot of work to make synthesized paint strokes, i.e., virtual painting on a computer, look like those created using traditional paint and drawing tools, for example, watercolor brushes, chalk strokes, etc. In particular, two known commercial products, “PAINTER” an “EXPRESSION” sold by MetaCreations, provide tools for use in creating “natural media” digital painting and drawing. “PAINTER” is raster based and uses procedural algorithms to generate paint strokes that give the appearance that they have been created by their real world counterpart. “EXPRESSION” is vector based and uses “skeletal strokes” technology.
Skeletal strokes, described in S. C. Hsu and I. H. H. Lee, “Drawing and Animation Using Skeletal Strokes,” SIGGRAPH '94 Conference Proceedings, July 1994 and S. C. Hsu, I. H. H. Lee, and N. E. Wiseman, “Skeletal Strokes,” UIST '93 Proceedings of the ACM SIGGRAPH and SIGCHI Symposium on User Interface Software Technology, November 1993, utilizes a vector graphics realization of the brush and stroke metaphor using arbitrary pictures as “ink.” Generally, defining a skeletal stroke requires drawing an instance of the flesh, which could be any arbitrary picture, around a reference line. The reference line provides a reference x-axis for the points specifying the position of the flesh; a reference thickness provides a scale to specify the lateral distance of these points from the reference line. A picture so anchored to a single reference line defines a skeletal stroke. Once a skeletal stroke is defined, it can be applied along any arbitrary path by simply drawing the path and aligning the reference line of the skeletal stroke with the given path. In this manner, the flesh is distorted (stretched, compressed, bent and/or sheared) to generally follow the path.
It should be noted that it is possible to distort or warp images without reference to a specified reference line. As an example, the U.S. Pat. No. 5,920,327 issued to Robert Seidensticker, Jr., describes rendering graphical objects at different resolutions within the same image to generate a ‘fish-eye’ view. It does not, however, teach techniques for rendering graphics relative to arbitrarily curved baselines or other reference lines.
While these tools generally work for their intended purpose, both “PAINTER” and “EXPRESSION” tend to fall short in terms of the realism of the paint stroke synthesized. In particular, because of the procedural nature of “PAINTER” and the vector nature of “EXPRESSION”, the paint strokes produced lack the subtle flaws and detail of real brush strokes or real objects. Accordingly, a need exists for an apparatus and method for digitally producing brush strokes that appear to be hand drawn and painted. It is also desirable to reduce the computational effort in providing such functionality in order to provide responsive applications that can be executed on a broad range of systems (as opposed to high end computing machines).
In many embodiments the paint brush may be specified by a bitmap, termed a bitmap brush that can be treated as a two-dimensional object. Two-dimensional graphical objects are customarily transformed using affine transformations, such as scaling, rotating, skewing, and translating. In addition, non-affine transformations, such as texture mapping, bilinear and perspective transforms, are available that can actually “warp” the graphical object. For instance, in a bilinear transform, a rectangle is transformed into a “quad,” i.e., a quadilateral, such that any point along the edge of the rectangle becomes a point on the edge of the quad while retaining its relative position. Points within the rectangle are similarly distorted or warped in their relative positions. It is convenient to regard bilinear transforms as preserving equally spaced points along a line but not necessarily preserving diagonal straight lines as straight lines.
A brush stroke can be imagined to be along a path connecting two endpoints. Such a path may be imagined to have a width and a curvature, including sharp turns. The width may be constant or it may vary in a prescribed manner, e.g., as a function of the local curvature or some other rule. The brush itself may be an image to be warped or a set of tiles to be arranged along the path prescribed by a guideline, which includes information about the path and the thickness of the desired brush stroke.